///////////////////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------------------
#ifndef __I_TEXTURE_LOADER_H__
#define __I_TEXTURE_LOADER_H__

//-----------------------------------------------------------------------------

#include <Config.h>
#include <vector>

class	File;

//-----------------------------------------------------------------------------

class ITextureLoader
{
	friend class Texture;
private:
	static	std::vector<ITextureLoader*>	m_textureLoaders;

protected:
	static	void							RegisterLoader(ITextureLoader*	loader);
	static	void							UnregisterLoader(ITextureLoader*	loader);
	static	void							UnregisterLoaders();

public:
	static	ITextureLoader*					GetLoaderForFile(File* textureFile);

	virtual	bool							CanLoad(File* textureFile) = 0;
	virtual	s32								GetData(File* textureFile, void** data, u16& width, u16& height, GLenum& format, GLenum& type) = 0;

};

#endif // __I_TEXTURE_LOADER_H__
//-----------------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////
